The Department of Defense (DoD) has been examining the role of game technology for use with future training systems. Government funded research programs have sponsored the development of commercial software that attempts to bridge simulation protocols and the commercial game market. GameLink, developed by MaK Technologies, creates a network bridge between Epic Unreal Engine game content and HLA or DIS simulations. University of Pittsburg researchers have developed a system which uses multi-agent technology to interconnect otherwise incompatible systems (Unreal Tournament Semi-Automated Force). Overall, the goal to bridge game and simulation technology has been disparate and no API specifications, standards, or software implementations have yet emerged.
Interoperability between simulators is an ongoing and complex problem that most distributed systems must deal with. Certain military protocols have tried to address this problem, most notably at the network level, with such protocols as the Distributed Interactive Simulation (DIS), High Level Architecture (HLA), or Test and Training Enabling Architecture (TENA). Unfortunately a lack of stringent implementation specifications, even with higher level features such as FOM definition and implementation, is only applicable from one developer to another. Additionally, the absence of any standardization has made it difficult to support complex feature sets such as models with many levels of matrix transformations. Furthermore, simulation systems require high network performance to operate with complex data types within a distributed simulation environment. Unfortunately, very complicated data such as skeletal articulations tend to create noticeable latency within a large federated system.
Applicant's U.S. App. Pub. No. US 2002/0082086 A1 (“Mission Control”) defines a system where the controlling application communicates with the game engine via a network client and server architecture. The game engine is required to create a network client in order to communicate with the controlling applications network server (i.e., mission control). This mechanism only allows direct calls to be made to the network interface, which limits data structure usage, speed, and has extremely complex maintenance. Moreover, Mission Control utilizes a network protocol defined to communicate control of the game engine. Mission Control assumes that the game engine will connect via Mission Control's network protocol after the game engine's process is started. Mission Control has no method to interact with data of either the game engine or the simulator, in sharp contrast to the present invention. The present invention has a defined interface for the control and data interaction of the game engine, as well as an interface for the data interaction of the simulator. These interfaces of the present invention allow not only control the game engine, but also act as a vehicle for data between game engines and simulators. Since Mission Control only has a control mechanism over a network protocol, Mission Control cannot convey any data from a game engine to a simulator.
Although game technology is starting to gain credence as a valid training tool in the modeling and simulation industry, a generic architecture designed to easily integrate current and future capable systems is yet to be developed. The present invention seeks to solve these problems by providing a mechanism that does not communicate with the game engine through a network protocol and thus allows for a much more flexible, maintainable, and fast method of data extraction and injection.
The following terms are utilized throughout the specification in accordance with the accompanying definitions.
EAI Core: Primary API for which integrators access Modules and Controllers.
Entity Controller: Maintains all registered entity types and Sister Entity types. Creates Sister Entities and Entity Modules as well as updating those references in the Entity Modules.
Entity Controller Module: Primary access for Extensions to interact with entity data. Maintains changes from Extensions and commits those changes to the EAI Core. One Entity Module is needed per Extension.
Interaction Controller: Maintains all registered Interaction types and Sister Interaction types. Creates Sister Interactions and executes those interactions on all relevant Interaction Modules.
Interaction Controller Module: Primary access for Extensions to execute and receive Interactions.
Engine Controller: Primary interface for controlling the integrated game engine.
Extension Controller: Primary interface for instantiating and maintaining Extensions.
Entity: A standard C++ object defined by the EAI Core to contain standard information that represents objects in the game engine from munitions to humans and vehicles. Entities can be interacted with by any system interfacing with an Entity Controller Module.
Sister Entity: A standard C++ object defined by the game engine or Extension to translate information between EAI Core Entities.
Interaction: A standard C++ object defined by the EAI Core to represent any event triggered in the system from either game engines or Extensions. Interactions can be executed and received from any system interfacing with an Interaction Controller Module.
Sister Interaction: A standard C++ object defined by the game engine or Extension to execute or receive EAI Core Interactions.
Controlling Application: Any application that uses the EAI Core on the API level, or instantiates the EAI Core DLL.
Extension: Any applications integrated with the Extension Controller, Entity Controller Module, and Interaction Controller Module that listen, inject, or modify Entities or Interactions within the EAI Core.
Launcher: An interface that is implemented within the game engine to allow the Engine Controller to launch and maintain an instance of that game engine.
Reflector: An interface that is implemented within the game engine to allow the Entity Controller and Interaction Controller to interact with the game engines Sister Entities and Interactions.